The well recognized Small Computer System Interface ("SCSI") standards of the American National Standards Institute (ANSI X3.131-1986) specify the electrical, mechanical and logical characteristics of an input/output (I/O) bus interface for coupling physically small computers with other small computers and peripheral devices. Such peripheral devices may include, for example, disk drives, tape drives, printers, compact disk read-only memories, and scanners. The SCSI standards are available from the American National Standards Institute, Inc., New York, N.Y., U.S.A., and are incorporated herein by reference.
The SCSI standards generally specify an I/O bus, which commonly is referred to as a "SCSI bus." Instead of requiring a separate bus controller, a SCSI bus utilizes a SCSI bus protocol, specified by the SCSI standards, that is implemented distributively within either central processing units, host adapters of computers on the bus, and/or controllers of peripheral devices on the bus.
The SCSI bus protocol facilitates information transfer between devices connected to the bus. More particularly, the bus protocol includes an addressing mechanism for identifying the devices on the bus, and specifies connection-control signals for transferring data between an initiating device i.e., "initiator" and an intended recipient device i.e., "target". The connection-control signals first arbitrate for control of the SCSI bus, and then establish a connection between an initiator and a target when the initiator controls the SCSI bus. A process designated by the standard as SELECTION occurs when an initiator (typically a host computer) establishes a connection by a signaling a device that is to become a target. Conversely, a process designated by the standard as RESELECTION occurs when a target notifies an initiator that an existing connection is to be reestablished for the purpose of continuing a transfer.
In general, any peripheral device having a controller complying with the SCSI standards can function properly when connected to a SCSI bus. Accordingly, the standards have lead to a proliferation of the types and sources of commercially-available peripheral devices that may be used with conventional computer systems complying with the SCSI standards. Moreover, computer systems complying with the standards can easily be configured and reconfigured by end users to meet specific computing needs, and to incorporate evolving peripheral device technologies.
While many conventionally implemented SCSI bus interfaces are suitable for their intended purposes, most generally are limited to supporting no more than fifteen peripheral devices. This limit presents a significant drawback in the art. Furthermore, as systems employing SCSI buses have expanded and become more powerful, the need has increased for more storage capacity and the ability to connect more peripheral devices to the bus. For instance, the need for more storage often is particularly acute in multi-user computer systems.
A known approach for increasing the number of SCSI peripheral devices that may be connectable to a SCSI bus is disclosed in U.S. Pat. No. 5,274,783, House et al., assigned to Digital Equipment Corp. of Maynard, Mass., the subject matter of which is incorporated herein, in its entirety, by reference. House et al. discloses a bus extender for connecting a secondary SCSI bus to a single port on a main SCSI bus. In this manner, one or more host computers on the primary bus can be interconnected to one or more peripheral devices on the secondary bus. Since the bus extender interface complies with SCSI standards, any of a variety of types of commercially-available peripheral devices having SCSI controllers can be supported on the secondary bus.
The bus extender employs a first transceiver coupled to the main SCSI bus, a second transceiver coupled to the secondary bus, and signal transfer and logic circuitry for controlling the operation of the transceivers and passing signals between the transceivers. The logic circuitry also performs the address translation necessary for inter-bus communication.
The bus extender disclosed in House et al. takes advantage of the dual-tier, hierarchal addressing system, specified by the SCSI standards, to direct messages from initiators on the main bus to targets on the secondary bus. In the addressing mechanism employed by the House device, each device connected to either the main or secondary bus is identified by a unique device identification code ("ID"). In addition, each device on the secondary bus is associated with an auxiliary identification, which in the SCSI standards is referred to as the logical unit number (LUN).
For purposes of communication, the bus extender has an ID on both the main and secondary buses. Whenever connection-control signals on either the main or secondary buses reference the ID of the extender, the extender responds and attempts to establish the connection necessary to transfer information to the ultimate recipient on the specified bus.
During a SELECTION, the extender first converts the LUN field data of the connection-control signals received over the primary bus to the ID of the target on the secondary bus, and then supplies its auxiliary-bus ID as the initiator ID in the auxiliary-bus connection control signals. The extender then attempts to establish a communication link with the target device via connection-control signals on the secondary bus by using the target ID generated by the extender. Analogously, during a RESELECTION, the extender converts the target ID contained in the auxiliary-bus connection-control signals into LUN field data, supplies the extender's own main-bus ID as the target attempting RESELECT, and then uses the ID of the initiator of the earlier SELECTION, which the extender has stored (e.g., in a suitable latch), for directing the RESELECTION message to the initiator.
Once a communication link for SELECTION or RESELECTION has been established between the initiator and the target, the extender transfers message data signals e.g., COMMAND, STATUS, DATA-IN, and DATA-OUT between the main and secondary buses directly and without modification. The extender therefore intervenes only when the communication link is being established and not when the actual information is transferred.
Problems arise with the House bus extender, however, when there is a simultaneous SELECTION and RESELECTION by an initiator on the main bus and target on the secondary bus. Such situation is referred to as a SELECTION and RESELECTION conflict. As described at column 12, lines 13-21 of House et al., the bus extender attempts to resolve such conflict by causing an unexpected bus free state on the primary bus. According to the SCSI standards, an initiator that detects an unexpected bus free condition at this point should assume that the target wishes to perform a RESELECTION. In practice, however, many initiator implementations, behave unpredictably and often treat this condition as a fatal error. Accordingly, a need exists for an improved bus extender that is capable of resolving SELECTION and RESELECTION conflicts in a manner that causes neither deadlock nor error conditions.